import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

// 定义Score类，用于表示成绩，包含姓名和分数
class Score {
    String name;
    float score;

    // 构造函数，初始化科目名称和分数
    Score(String name, float score) {
        this.name = name;
        this.score = score;
    }

    // 重写toString方法，方便打印Score对象
    @Override
    public String toString() {
        return "Score{" +
                "name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
}

// 定义Student类，用于表示学生信息
class Student {
    // 存储学生基本信息，姓名和学号
    String name;
    String sno;

    // 构造函数，初始化学号和学生姓名
    Student(String sno, String studentName) {
        this.name = studentName;
        this.sno = sno;
    }

    // 存储学生的作业成绩，使用ArrayList来保存多个Score对象
    ArrayList<Score> homeworkScores = new ArrayList<>();
    // 存储学生的互动成绩，使用ArrayList来保存多个Score对象
    ArrayList<Score> interactionScores = new ArrayList<>();

    float examScore;

    // 重写toString方法，方便打印Student对象
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sno='" + sno + '\'' +
                ", homeworkScores=" + homeworkScores +
                ", interactionScores=" + interactionScores +
                '}';
    }
}

public class StudentMain {
    public static void main(String[] args) {
        // 使用HashMap来存储学生信息，以学号为键，Student对象为值
        Map<String, Student> students = new HashMap<>();
        // 创建Scanner对象，用于从控制台读取输入
        Scanner scanner = new Scanner(System.in);

        // 第一个循环，读取学生的作业成绩信息
        while (true) {
            String input = scanner.nextLine();
            // 当输入为"exit1"时，退出循环
            if (input.equals("exit1")) {
                break;
            }
            // 将输入字符串按逗号分割成数组
            String[] arr = input.split(",");
            // 获取学号
            String sno = arr[0];
            // 获取姓名
            String studentName = arr[1];
            // 获取作业成绩，并转换为float类型
            float score = Float.parseFloat(arr[5]);
            // 创建一个Score对象，包含课程名称和成绩
            Score scoreObj = new Score(arr[4], score);

            // 如果students中不存在该学号对应的学生，则创建一个新的Student对象并添加到students中
            if (!students.containsKey(sno)) {
                students.put(sno, new Student(sno, studentName));
            }
            // 将作业成绩的Score对象添加到对应的学生的作业成绩列表中
            students.get(sno).homeworkScores.add(scoreObj);
        }

        // 第二个循环，读取学生的互动成绩信息
        while (true) {
            String input = scanner.nextLine();
            // 当输入为"exit2"时，退出循环
            if (input.equals("exit2")) {
                break;
            }
            String[] arr = input.split(",");
            // 获取学号
            String sno = arr[0];
            // 获取姓名
            String studentName = arr[1];
            // 获取互动成绩，并转换为float类型
            float score = Float.parseFloat(arr[5]);
            // 创建一个Score对象，包含课程名称和成绩
            Score scoreObj = new Score(arr[4], score);

            // 如果students中不存在该学号对应的学生，则创建一个新的Student对象并添加到students中
            if (!students.containsKey(sno)) {
                students.put(sno, new Student(sno, studentName));
            }
            // 将互动成绩的Score对象添加到对应的学生的互动成绩列表中
            students.get(sno).interactionScores.add(scoreObj);
        }

        // 第三个循环，读取学生的考核成绩信息，并取最低分作为最终考核成绩
        while (true) {
            String input = scanner.nextLine();
            // 当输入为"exit3"时，退出循环
            if (input.equals("exit3")) {
                break;
            }
            String[] parts = input.split(",");
            String sno = parts[0];
            String studentName = parts[1];
            // 初始化最低分为第一个考核成绩
            float min = Float.parseFloat(parts[4]);
            // 依次比较并更新最低分
            min = Math.min(min, Float.parseFloat(parts[5]));
            min = Math.min(min, Float.parseFloat(parts[6]));
            min = Math.min(min, Float.parseFloat(parts[7]));
            min = Math.min(min, Float.parseFloat(parts[8]));

            // 如果students中不存在该学号对应的学生，则创建一个新的Student对象并添加到students中
            if (!students.containsKey(sno)) {
                students.put(sno, new Student(sno, studentName));
            }
            // 将最低分设置为学生的考核成绩
            students.get(sno).examScore = min;
        }

        // 读取要查询的学生学号
        String id = scanner.nextLine();
        // 根据学号从students中获取对应的Student对象
        Student student = students.get(id);
        // 如果找到了对应的学生
        if (student != null) {
            // 打印学生姓名
            System.out.println(student.name);
            // 计算学生作业成绩的平均分
            float sumHomeworkScore = 0;
            for (Score score : student.homeworkScores) {
                sumHomeworkScore += score.score;
            }
            float avgHomeworkScore = sumHomeworkScore / student.homeworkScores.size();
            System.out.println("作业平均分：" + avgHomeworkScore);

            // 计算学生互动成绩的最高分
            float maxInteractionScore = Float.MIN_VALUE;
            for (Score score : student.interactionScores) {
                maxInteractionScore = Math.max(maxInteractionScore, score.score);
            }
            System.out.println("互动成绩最高分：" + maxInteractionScore);

            // 打印学生的考核成绩最低分
            System.out.println("考核成绩最低分：" + student.examScore);
        }
    }
}
